package kujie.mongo.domain.mongo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mongoplus.annotation.ID;
import com.mongoplus.annotation.collection.CollectionField;
import com.mongoplus.annotation.collection.CollectionName;
import com.mongoplus.annotation.index.MongoIndex;
import com.mongoplus.enums.FieldFill;
import com.mongoplus.enums.IdTypeEnum;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 帖子表（记录帖子、活动、资源基本信息）
 */
@Data
@CollectionName("quanzi_post")
public class QuanziPostMongoBO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    @ID(type = IdTypeEnum.ASSIGN_UUID)
    @CollectionField("id")
    private String id;

    /**
     * 帖子id
     */
    @MongoIndex(unique = true)
    @CollectionField(value = "post_id")
    private Integer postId;

    /**
     * 用户id
     */
    @MongoIndex(unique = true)
    @CollectionField("user_id")
    private Integer userId;

    /**
     * 帖子类型(1-帖子，2-活动，3-资源)
     */
    @CollectionField("post_type")
    private Integer postType;

    /**
     * 标题
     */
    @CollectionField("title")
    private String title;

    /**
     * 内容
     */
    @CollectionField("content")
    private String content;

    /**
     * 图片ossId合集
     */
    @CollectionField("pic_id")
    private List<Integer> picId;

    /**
     * 帖子发布时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @CollectionField("post_release_time")
    private LocalDateTime postReleaseTime;

    /**
     * 帖子发布位置
     */
    @CollectionField("post_location")
    private String postLocation;

    /**
     * 帖子发布类型：1-生活圈（默认），2-工作圈
     */
    @CollectionField("post_release_type")
    private Integer postReleaseType;

    /**
     * 帖子可见状态：1-所有人（默认），2-互相关注，3-仅自己
     */
    @CollectionField("post_visible_state")
    private Integer postVisibleState;

    /**
     * 维度
     */
    @CollectionField("latitude")
    private String latitude;

    /**
     * 经度
     */
    @CollectionField("longitude")
    private String longitude;

    /**
     * 状态：0-未审（默认），1-通过，2-驳回，3-草稿
     */
    @CollectionField("post_status")
    private Integer postStatus;

    /**
     * 标签
     */
    @CollectionField("label")
    private String label;

    /**
     * 艾特好友用户id合集
     */
    @CollectionField("tag_friends")
    private List<Integer> tagFriends;

    /**
     * 收藏数
     */
    @CollectionField("num_of_collections")
    private Integer numOfCollections;

    /**
     * 评论数
     */
    @CollectionField("num_of_comments")
    private Integer numOfComments;

    /**
     * 点赞数
     */
    @CollectionField("num_of_likes")
    private Integer numOfLikes;

    /**
     * 租户id
     */
    @CollectionField("tenant_id")
    private String tenantId;

    /**
     * 创建部门
     */
    @CollectionField("create_dept")
    private Long createDept;

    /**
     * 创建者
     */
    @CollectionField(value = "create_by", fill = FieldFill.INSERT)
    private Long createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @CollectionField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新者
     */
    @CollectionField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private Long updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @CollectionField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 备注
     */
    @CollectionField("remark")
    private String remark;
}